package cn.akwangl.concurrency.web.model.items.service;

import cn.akwangl.concurrency.web.model.items.pojo.ItemsSpecEntity;
import cn.akwangl.concurrency.web.model.order.pojo.ShopCart;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 商品规格 每一件商品都有不同的规格，不同的规格又有不同的价格和优惠力度，规格表为此设计 服务类
 * </p>
 *
 * @author 阿坤同学
 * @since 2022-11-22 14:30:33
 */
public interface ItemsSpecService extends IService<ItemsSpecEntity> {
    /**
     * 获取商品规格.
     *
     * @param itemSpecIds 规格id集合
     * @return map key 规格id
     */
    Map<String, ItemsSpecEntity> getItemsSpecEntityMap(List<String> itemSpecIds);

    /**
     * 利用数据库版本号扣减库存(它是线程安全的).
     *
     * @param shopCarts 购物车数据
     * @return true:成功 false:失败
     * @author 阿坤同学
     * @date 2022-11-23 10:27
     */
    boolean decreaseItemSpecStockVersion(List<ShopCart> shopCarts);

    /**
     * 扣减库存(它不是线程安全的).
     *
     * @param shopCarts 购物车数据
     * @return true:成功 false:失败
     * @author 阿坤同学
     * @date 2022-11-23 10:27
     */
    boolean decreaseItemSpecStock(List<ShopCart> shopCarts);

    /**
     * 统计库存数.
     *
     * @param itemsSpecIds 商品规格Id集合
     * @return 所有商品规则库存数.
     * @author 阿坤同学
     * @date 2022-11-24 20:16
     */
    long countStock(List<String> itemsSpecIds);
}
